package com.denlaku.longan.controller;

import com.denlaku.longan.http.Return;
import com.denlaku.longan.vo.DataModel;
import com.denlaku.longan.vo.PageBy;
import jakarta.servlet.http.HttpServletResponse;
import lombok.SneakyThrows;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartRequest;

import java.util.List;

/**
 * @author tianx
 */
@RequestMapping("/api/data-model")
public interface DataModelController {
    /**
     * 新增数据模型
     *
     * @param dataModel 数据模型
     * @return 响应对象
     */
    @PostMapping("/add")
    Return<Long> add(@RequestBody DataModel dataModel);

    /**
     * 更新数据模型
     *
     * @param dataModel 数据模型
     * @return 响应对象
     */
    @PostMapping("/update")
    Return<Void> update(@RequestBody DataModel dataModel);

    /**
     * 删除数据导入
     *
     * @param id 数据导入ID
     * @return 响应对象
     */
    @PostMapping("/delete")
    Return<Void> delete(Long id);

    /**
     * 获取数据导入
     *
     * @param id 数据导入ID
     * @return 响应对象
     */
    @GetMapping("/get")
    Return<DataModel> get(Long id);

    /**
     * 查询数据导入列表
     *
     * @param dataModel 查询参数
     * @param pageBy 分页参数
     * @return 响应对象
     */
    @PostMapping("/page-list")
    Return<List<DataModel>> pageList(@RequestBody DataModel dataModel, PageBy pageBy);

    /**
     * 查询数据导入列表
     *
     * @param id 查询参数
     * @param response 响应对象
     */
    @PostMapping("/template")
    void template(Long id, HttpServletResponse response);

    /**
     * 查询数据导入列表
     *
     * @param id 查询参数
     * @param request 请求对象
     * @return 数据导入列表
     */
    @PostMapping("/dataImport")
    @SneakyThrows
    Return<Void> dataImport(Long id, MultipartRequest request);


    /**
     * 查询数据导入列表
     *
     * @param id 查询参数
     */
    @PostMapping("/dataExport")
    void dataExport(Long id);

}
